package br.com.fatec.cqr.control.sql;

import java.util.ArrayList;

import br.com.fatec.cqr.control.model.Comando;
import br.com.fatec.cqr.main.Principal;

import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;

public class Insert implements Comando {

	@Override
	public String conversao(String texto) {
		ArrayList<String> lista = new ArrayList<String>();
		int indexOf = texto.indexOf("into");
		String tabela = texto.substring(indexOf + 4, texto.indexOf("("));

		String retorno = "Comando executado: db." + tabela + ".insert({ ";
		int retirar = 0;

		String[] split = texto.split("\\(");
		for (int i = 1; i < split.length; i++) {

			String[] split2 = split[i].split(",|\\)");
			retirar = (i == 1) ? 1 : 0;

			for (int j = 0; j < split2.length - retirar; j++) {
				lista.add(split2[j]);
			}

		}
		int metade = (lista.size() / 2);
		for (int i = 0; i < metade; i++) {
			retorno += lista.get(i) + ": " + lista.get(i + metade);
			retorno += (i == metade - 1) ? "" : ", ";
		}
		retorno += " })";

		/**/

		DBCollection coll = Principal.db.getCollection(tabela);

		BasicDBObject doc = new BasicDBObject();
		for (int i=0; i< metade; i++) {
		
			lista.set(i+metade,lista.get(i+metade).replaceAll("\"", ""));
		
			doc.append(lista.get(i), lista.get(i+metade));
		}
		
		coll.insert(doc);
		
		retorno+="\n\nInserido com sucesso.";

		return retorno;
	}

	@Override
	public String expressao() {
		return "^insertinto.*";
	}

}
